#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or https://opensource.org/licenses/CDDL-1.0.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#

#
# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#

#
# Copyright (c) 2013, 2016 by Delphix. All rights reserved.
#

. $STF_SUITE/include/libtest.shlib

export DISKSARRAY=$DISKS
export DISK_ARRAY_NUM=$(echo ${DISKS} | awk '{print NF}')
set -A disk_array $(find_disks $DISKS)
case "${#disk_array[*]}" in
0)
	DISK_COUNT=0
	;;
1)
	# We need to repartition the single disk to two slices.
	DISK_COUNT=1
	ZFS_DISK=${disk_array[0]}
	SINGLE_DISK=$ZFS_DISK
	NONZFS_DISK=$ZFS_DISK
	if is_linux; then
		if is_mpath_device $ZFS_DISK; then
			export DEV_DSKDIR=$DEV_MPATHDIR
		else
			export DEV_DSKDIR=$DEV_RDSKDIR
		fi
		if ( is_mpath_device $ZFS_DISK ) && [[ -z $(echo $ZFS_DISK | awk 'substr($1,18,1)\
		    ~ /^[[:digit:]]+$/') ]] || ( is_real_device $ZFS_DISK ); then
			ZFSSIDE_DISK=${SINGLE_DISK}1
			NONZFSSIDE_DISK=${SINGLE_DISK}2
		elif ( is_mpath_device $ZFS_DISK || is_loop_device $ZFS_DISK ); then
			ZFSSIDE_DISK=${SINGLE_DISK}p1
			NONZFSSIDE_DISK=${SINGLE_DISK}p2
		else
			log_fail "$ZFS_DISK not supported for partitioning."
		fi
	else
		export DEV_DSKDIR="/dev/dsk"
		ZFSSIDE_DISK=${SINGLE_DISK}s0
		NONZFSSIDE_DISK=${SINGLE_DISK}s1
	fi
	;;
*)
	# In this case there are at least enough disks to use.
	DISK_COUNT=2
	ZFS_DISK=${disk_array[0]}
	NONZFS_DISK=${disk_array[1]}
	if is_linux; then
		if is_mpath_device $ZFS_DISK; then
			export DEV_DSKDIR=$DEV_MPATHDIR
		else
			export DEV_DSKDIR=$DEV_RDSKDIR
		fi
		if ( is_mpath_device $ZFS_DISK ) && [[ -z $(echo $ZFS_DISK | awk 'substr($1,18,1)\
		    ~ /^[[:digit:]]+$/') ]] || ( is_real_device $ZFS_DISK ); then
			ZFSSIDE_DISK=${ZFS_DISK}1
		elif ( is_mpath_device $ZFS_DISK || is_loop_device $ZFS_DISK ); then
			ZFSSIDE_DISK=${ZFS_DISK}p1
		else
			log_fail "$ZFS_DISK not supported for partitioning."
		fi
		if ( is_mpath_device $NONZFS_DISK ) && [[ -z $(echo $NONZFS_DISK | awk 'substr($1,18,1)\
		    ~ /^[[:digit:]]+$/') ]] || ( is_real_device $NONZFS_DISK ); then
			NONZFSSIDE_DISK=${NONZFS_DISK}1
		elif ( is_mpath_device $NONZFS_DISK || is_loop_device $NONZFS_DISK ); then
			NONZFSSIDE_DISK=${NONZFS_DISK}p1
		else
			log_fail "$NONZFS_DISK not supported for partitioning."
		fi
	else
		export DEV_DSKDIR="/dev/dsk"
		ZFSSIDE_DISK=${ZFS_DISK}s0
		NONZFSSIDE_DISK=${NONZFS_DISK}s0
	fi
	;;
esac

export DISK_COUNT ZFS_DISK NONZFS_DISK SINGLE_DISK ZFSSIDE_DISK NONZFSSIDE_DISK

export TESTFILE=/etc/passwd
export NONZFS_TESTDIR=$TESTDIR/nonzfstestdir
read -r SUMA SUMB _ < <(cksum $TESTFILE)
export SUMA SUMB
export FS_SIZE=1g
export BNAME=`basename $TESTFILE`
export DNAME=`dirname $TESTFILE`
